<?php



class Permissao
{
	private $idCurso;
	private $elemento;
	private $grupoUsuario;
	private $idGrupo;
	private $permissao;
	private $tipoUsuarioCadastro;
	
	public function Permissao($idCurso, $elemento, $tipoUsuarioCadastro){
		$this->idCurso = $idCurso;
		$this->elemento = $elemento;
		$this->tipoUsuarioCadastro = $tipoUsuarioCadastro;
	}

    /**
     * Returns $grupoUsuario.
     * @see Permissoes::$grupoUsuario
     */
    public function getGrupoUsuario()
    {
        return $this->grupoUsuario;
    }
    
    /**
     * Sets $grupoUsuario.
     * @param object $grupoUsuario
     * @see Permissoes::$grupoUsuario
     */
    public function setGrupoUsuario($grupoUsuario)
    {
        $this->grupoUsuario = $grupoUsuario;
    }
    
    /**
     * Returns $idGrupo.
     * @see Permissoes::$idGrupo
     */
    public function getIdGrupo()
    {
        return $this->idGrupo;
    }
    
    /**
     * Sets $idGrupo.
     * @param object $idGrupo
     * @see Permissoes::$idGrupo
     */
    public function setIdGrupo($idGrupo)
    {
        $this->idGrupo = $idGrupo;
    }
    
    /**
     * Returns $permissao.
     * @see Permissoes::$permissao
     */
    public function getPermissao()
    {
        return $this->permissao;
    }
	
	public static function getPermissaoElementoCurso($idCurso,$elemento,$idElemento = 0){
		$strQuery = "SELECT permissao,tipoUsuario FROM permissoes WHERE idCurso = '$idCurso' AND elemento = '$elemento' AND idElemento = $idElemento";
		if($resultado = BancoDados::query($strQuery)){
			return $resultado;
		}else
			return false;
	}
    
    /**
     * Sets $permissao.
     * @param object $permissao
     * @see Permissoes::$permissao
     */
    public function setPermissao($permissao,$tipoUsuario,$idGrupo,$grupoUsuario,$idElemento){
        $strQuery = "INSERT INTO permissoes VALUES('$this->idCurso','$this->elemento',$idElemento,$grupoUsuario,$idGrupo,'$permissao','$tipoUsuario')";
	    if($resultado = BancoDados::query($strQuery)){
        	return true;
		}else 
			return false;
    }
    
    public static function setPermissaoInicial($idCurso,$elemento,$idElemento = 0){
    	$permissoesIniciais = array( 'Professor' => array('Ver','Alterar','Excluir',"Editar","Inserir"),
    								'Tutor'=> "Ver",
    								'Aluno'=> "Ver");
	    foreach($permissoesIniciais as $indice => $permissao){
			if(is_array($permissao)){
				$strQuery0 = "INSERT INTO permissoes VALUES('$idCurso','$elemento',$idElemento,null,null,'$permissao[0]','$indice')";
				BancoDados::query($strQuery0);
				$strQuery1 = "INSERT INTO permissoes VALUES('$idCurso','$elemento',$idElemento,null,null,'$permissao[1]','$indice')";
				BancoDados::query($strQuery1);
				$strQuery2 = "INSERT INTO permissoes VALUES('$idCurso','$elemento',$idElemento,null,null,'$permissao[2]','$indice')";
				BancoDados::query($strQuery2);
				$strQuery3 = "INSERT INTO permissoes VALUES('$idCurso','$elemento',$idElemento,null,null,'$permissao[3]','$indice')";
				BancoDados::query($strQuery3);
				$strQuery4 = "INSERT INTO permissoes VALUES('$idCurso','$elemento',$idElemento,null,null,'$permissao[4]','$indice')";
				BancoDados::query($strQuery4);
			}else{
				$strQuery = "INSERT INTO permissoes VALUES('$idCurso','$elemento',$idElemento,null,null,'$permissao','$indice')";
				BancoDados::query($strQuery);
			}
		}
		return true;
    }
	
	public static function alterarPermissao($idCurso,$permissoes){
		if(Permissao::getPermissaoCurso($idCurso)){		
			$query = "DELETE FROM permissoes WHERE idCurso = $idCurso AND idElemento = 0";
			BancoDados::query($query);
		}
		if(count($permissoes)){
			foreach($permissoes as $indice => $conteudo){
				$permissao = explode("_",$indice);
				$strQuery = "INSERT INTO permissoes VALUES($idCurso,'$permissao[2]',0,null,null,'$permissao[0]','$permissao[1]')";
				BancoDados::query($strQuery);
			}
		}
	}
	
	public static function getPermissaoCurso($idCurso){
		$query ="SELECT count(*) FROM permissoes WHERE idCurso = $idCurso";
		if($result = BancoDados::query($query)){
			return $result[0][0];
		}else{
			return false;
		}
	}
	
	public function checkPermissao($permissao,$tipoUsuarioCurso,$idElemento){
		if($tipoUsuarioCurso == "Dono"){
			return true;
		}
		
		if($this->tipoUsuarioCadastro == "Administrador"){
			return true;
		}
		if($this->tipoUsuarioCadastro == "Pesquisador"){
			if($permissao == 'Ver'){
				return true;
			}else{
				return false;
			}
		}
		$permitido = false;
		$strQuery = "SELECT permissao FROM permissoes WHERE idCurso = $this->idCurso AND elemento='$this->elemento' AND idElemento='$idElemento' AND tipoUsuario = '$tipoUsuarioCurso'";
		if($resultado = BancoDados::query($strQuery)){
			foreach($resultado as $indice => $conteudo){
				if($conteudo['permissao'] == $permissao){
					$permitido = true;
				}
			}
			return $permitido;
		}else
			return $permitido;
			
	}
	
	public function excluirPermissao($idElemento){
        $strQuery = "DELETE FROM permissoes WHERE elemento = '$this->elemento' AND idElemento ='$idElemento' ";
	    if($resultado = BancoDados::query($strQuery)){
        	return true;
		}else 
			return false;
    }
    
}

?>